#ifndef DEVIL1PLD_H
#define DEVIL1PLD_H

#include <stdint.h>
#include <stdbool.h>
#pragma pack(push, 1)

struct PldHeader {
    int32_t numOffset;
    // array of numOffset elements
    uint32_t *offsets; // <format=hex>
};

#pragma pack(pop)

typedef struct { 
// input: pointer to a struct, contents of the .pld file.
// * = pass by reference of a struct PldHeader
    bool (* const getheader)   (struct PldHeader*, const char*);

// input: pointer to header, index of offset, filesize
// * = pass by reference of a struct PldHeader
    int  (* const sizeofsector)(struct PldHeader*, unsigned int, unsigned int);

// input: a pld header struct.
// * = pass by reference of a struct PldHeader
    void (* const printheader) (struct PldHeader*);

} fn_devil1pld;
extern fn_devil1pld const DEVIL1PLD;

#endif
